AWS CloudTrail에서「로그 파일 검증」을 통해 무결성 검사해 보기

AWS CloudTrail에서「로그 파일 검증」을 통해 무결성 검사해 보기

AWS CloudTrail에서「로그 파일 검증」을 통해 무결성 검사해 보는 방법을 정리해 봤습니다.
Clock Icon2024.07.10

안녕하세요 클래스메소드 김재욱(Kim Jaewook) 입니다. 이번에는 AWS CloudTrail에서「로그 파일 검증」을 통해 무결성 검사해 보는 방법을 정리해 봤습니다.

무결성 검사란?

jw-logcloud-blg-1
AWS CloudTrail에서 추적을 생성할 때 추가 설정에서「로그 파일 검증」을 선택할 수 있습니다. 이 로그 파일 검증은 AWS CloudTrail에서 생성된 로그를 Amazon S3와 같은 저장소에 로그 파일을 전송하고, 해당 로그 파일이 수정, 삭제 혹은 변경되지 않았는지 무결성 검사를 진행합니다.

여기서 로그 파일 검증을 활성화하면, 한 시간 동안의 로그 파일을 참조하여 각 파일의 해시를 포함하는 파일을 만들어 지정한 S3 버킷으로 전송합니다. 이 파일을 다이제스트 파일이라고 합니다. 이 다이제스트 파일은 로그 파일과는 별도의 디렉토리에 저장됩니다.

https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/cloudtrail-log-file-validation-intro.html#cloudtrail-log-file-validation-intro-how-it-works

※ 해시는 데이터를 다루는 기법 중 하나로 검색과 저장을 빠르게하는 자료 구조이며, 다이제스트 파일은 이 해시 함수에 의해 생성되는 값을 의미합니다.

https://developer.mozilla.org/ko/docs/Glossary/Digest

무결성 검사를 사용하는 이유는 AWS 공식 문서에서 다음과 같이 설명하고 있습니다.

검증된 로그 파일은 보안 및 과학수사에서 중요한 역할을 합니다. 예를 들어, 검증된 로그 파일을 사용하면 로그 파일 자체가 변경되지 않았음을 또는 특정 사용자 자격 증명이 특정 API 활동을 수행했음을 확실하게 주장할 수 있습니다. 또한 CloudTrail 로그 파일 무결성 검증 프로세스를 통해 로그 파일이 삭제 또는 변경되었는지 알 수 있으며 일정 기간 동안 계정에 로그 파일이 전송되지 않았는지 확인할 수 있습니다.

https://docs.aws.amazon.com/ko_kr/awscloudtrail/latest/userguide/cloudtrail-log-file-validation-intro.html#cloudtrail-log-file-validation-intro-use-cases

CloudTrail 추적 생성

jw-logcloud-blg-8

CloudTrail 추적을 생성할 때「로그 파일 검증」을 체크합니다. 그 외 값들은 디폴트를 유지합니다.

jw-logcloud-blg-3

추적을 생성할 로그는 S3에서 읽고 쓰는 이벤트의 로그를 전부 지정한 S3 버킷으로 전송합니다.

결과 확인

jw-logcloud-blg-4

추적을 생성하고 Amazon S3로 들어와 보면, S3 버킷이 생성되어 있는 것을 확인할 수 있습니다. 해당 버킷에 들어와 보면,「CloudTrail-Digest/」와「CloudTrail/」 폴더가 생성되어 있는 것을 확인할 수 있습니다.

「CloudTrail-Digest/」는 이름으로 알 수 있듯이 다이제스트 파일이 전송되어 보존되는 폴더이며「CloudTrail/」은 추적을 생성할 때 설정한 S3에서 읽고 쓰는 이벤트의 로그를 저장하는 폴더입니다.

jw-logcloud-blg-5

「CloudTrail/」폴더를 확인해 보면 로그가 생성된 것을 확인할 수 있습니다.
※ 로그 파일이 생성되지 않는다면 S3 버킷에 객체를 업로드하는 등, 읽고 쓰기 작업을 진행하여 이벤트를 발생시켜 보세요.

aws cloudtrail validate-logs --trail-arn arn:aws:cloudtrail:ap-northeast-1:xxxxxxxxxx:trail/test-logs --start-time 20240710T08:00:00Z --end-time 20240710T17:00:00Z

마지막으로 AWS CLI를 이용하여 무결성 검사를 진행합니다. CloudTrail의 Arn은 생성한 추적의 Arn을 의미합니다.

무결성 검사 결과는 다음 블로그를 참고했습니다.

https://dev.classmethod.jp/articles/validating-cloudtrail-log-file-integrity/#toc-3

Results requested for 2021-06-25T08:00:00Z to 2021-06-25T09:00:00Z
Results found for 2021-06-25T08:46:47Z to 2021-06-25T09:00:00Z:

2/2 digest files valid
66/66 log files valid

로그 파일에 어떠한 위조도 이루어지지 않은 경우 즉, 로그 파일에 문제가 없다면 상기와 같은 결과가 표시됩니다.

Log file        s3://aws-cloudtrail-logs

Results requested for 2021-06-25T08:00:00Z to 2021-06-25T09:00:00Z
Results found for 2021-06-25T08:46:47Z to 2021-06-25T09:00:00Z:

2/2 digest files valid
65/66 log files valid, 1/66 log files INVALID

로그 파일에 변경이 이루어졌다면 상기와 같은 결과가 표시됩니다.

Log file        s3://aws-cloudtrail-logs

Results requested for 2021-06-25T08:00:00Z to 2021-06-25T09:00:00Z
Results found for 2021-06-25T08:46:47Z to 2021-06-25T09:00:00Z:

2/2 digest files valid
65/66 log files valid, 1/66 log files INVALID

마지막으로 로그 파일이 삭제된 경우 상기와 같은 결과가 표시됩니다.

로그 파일이 삭제되거나 변조가 이루어진 경우 어떠한 로그 파일인지 로그 파일에 대한 정보 또한 출력해주는 것을 확인할 수 있습니다.

본 블로그 게시글을 읽고 궁금한 사항이 있으신 분들은 [email protected]로 보내주시면 감사하겠습니다.

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.